#ifndef FILTEROPTION_H
#define FILTEROPTION_H

typedef unsigned short uint16;
typedef unsigned int uint32;
typedef unsigned char byte;

// The Option stuctures in Coherenence filter
typedef struct {

    double     T;          /* The total diffusion time (default 5) */
    double     dt;        /* Diffusion time stepsize, in case of scheme H,R or I defaults to 1, in case of scheme S or N defaults to 0.15 */
    double    sigma;      /* Sigma of gaussian smoothing before calculation of the image Hessian, default 1  */
    double    rho;      /* Sigma of gaussian smoothing before calculation of the image Hessian, default 1  */
    double    eigenmode;      /* There are many different equations to make an diffusion tensor. this value (only 3D) selects one.  */
                             /* 0 (default) : Weickerts equation, line like kernel */
                             /*   1 : Weickerts equation, plane like kernel        */
                             /* 2 : Edge enhancing diffusion (EED)                 */
                             /* 3 : Coherence-enhancing diffusion (CED)            */
                             /* 4 : Hybrid Diffusion With Continuous Switch (HDCS) */

   double C;      //     Default 1e-10
   double m;      //     Default 1
   double alpha;  // Default 0.001
// Constants which are needed with CED, EED and HDCS eigenmode
   double lambda_e;  // Default 0.02  // planar structure contrast
   double lambda_c;  // Default 0.02  // tube like structure contrast
   double lambda_h;  // Default 0.5   // treshold between structure and noise

   byte        scheme;          /* The numerical diffusion scheme used */
   byte    verbose;      /* Show information about the filtering, values: 'none'-n, 'iter' (default)->i , 'full'->f   */
} Options_p;

#endif // FILTEROPTION_H
